package lspay

import (
	"encoding/json"
)

// RefundRequest 退款请求
type RefundRequest struct {
	// 订单ID
	OrderId string `json:"orderId"`
	// 退款金额(单位分)
	Amount int64 `json:"amount"`
	// 退款原因
	Reason string `json:"reason"`
	// 商户ID
	MerchantId uint32 `json:"merchantId"`
	// 商户订单No
	OutTradeNo string `json:"outTradeNo"`
	// 自定义请求参数map
	ExtJson map[string]any `json:"extJson"`
	// 退款单号
	RefundNo string `json:"refundNo"`
}

// Bytes 将退款请求结构体序列化为字节数组
func (p *RefundRequest) Bytes() []byte {
	bs, _ := json.Marshal(p)
	return bs
}

// RefundResponse 退款响应
type RefundResponse struct {
	// 订单号
	OrderId string `json:"orderId"`
	// 退款金额(单位分)
	Amount int64 `json:"amount"`
	// 退款原因
	Reason string `json:"reason"`
	// 商户ID
	MerchantId uint32 `json:"merchantId"`
	// 支付渠道
	PayChannel PayChannelType `json:"payChannel"`
	// 支付方式
	PayModeType PayModeType `json:"payMode"`
	// 退款状态
	Status RefundStatus `json:"status"`
	// 退款时间
	RefundedAt int64 `json:"refundedAt"`
	// 退款编号
	RefundId string `json:"refundId"`
	// 商户退款编号
	OutRefundNo string `json:"outRefundNo"`
}
